/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package agh.rozproszony.messages;

import agh.rozproszony.model.Message;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Interfejs RMI deklarujacy metody dostępne na serwerze zarzadzającym wiadomościami
 * 
 * @author Seweryn
 */
public interface MessagesServer extends Remote {
    /**
     * Funkcja służąca do pobierania wiadomości po jego ID.
     * 
     * @param messageId - Identyfikator wiadomości
     * @return Wiadomość
     * @throws RemoteException 
     */
     public Message getMessage(int messageId) throws RemoteException;
     
     /**
      * Funkcja zwracająca listę nieprzczytanych wiadomości dla danego użytkownika.
      * 
      * @param userId - identyfikator zarejestrowanego użytkownika.
      * @return Lista wiadomości nieprzeczytanych.
      * @throws RemoteException 
      */
     public ArrayList<Message> getNotReadedMessages(int userId) throws RemoteException;
     
     /**
      *  Funkcja pobierająca listę wszystkich wiadomości dla użytkownika.
      *
      * @param userId - identyfikator zarejestrowanego użytkownika.
      * @return
      * @throws RemoteException 
      */
     public ArrayList<Message> getMessages(int userId) throws RemoteException;
     
     /**
      * Funkcja umieszczająca wiadomość na serwerze.
      * 
      * @param message - wysłana wiadomość
      * @throws RemoteException 
      */
     public Boolean insertMessage(Message message) throws RemoteException;
      /**
      *  Funkcja pobierająca wektor z serwera.
      *
      * @param userId - identyfikator zarejestrowanego użytkownika.
      * @return
      * @throws RemoteException 
      */
     public Map<Integer, Integer> getWektor() throws RemoteException;
      /**
      *  Funkcja dodająca 1 do wektora uzytkownika.
      *
      * @param userId - identyfikator zarejestrowanego użytkownika.
      * @return
      * @throws RemoteException 
      */
     public Boolean addWektor(int userId) throws RemoteException;
     
    
}
